/**
 * 
 */
package server.persistencia;

import server.dominio.Centro;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;


/**
 * @author tpaxle
 *
 */
public class DAOCentroMySQL extends DAOCentro {
	private Agente Broker;
	private Connection Con;
	
	public DAOCentroMySQL() throws SQLException {
		Broker= Agente.getAgente();
		Con= Broker.getConnection();
	}
	
	
	/* (non-Javadoc)
	 * @see persistencia.DAOCentro#delete(java.lang.Object)
	 */
	@Override
	public int delete(Object centro) throws SQLException{
		PreparedStatement stmt;		
		int result= 0;

		stmt = Con.prepareStatement("DELETE FROM Centro WHERE Nombre= ? and Localidad = ?");
		stmt.setString(1, ((Centro)centro).getNombre());
		stmt.setString(2, ((Centro)centro).getLocalidad());
		result= stmt.executeUpdate();
		stmt.close();
				
		return result;
	}

	/* (non-Javadoc)
	 * @see persistencia.DAOCentro#find(java.lang.String)
	 */
	@Override
	public Object find(String condicion) throws SQLException {
		Centro centro= null;
		Statement stmt;
		
		stmt = Con.createStatement();
		ResultSet res  = stmt.executeQuery(condicion);
		if(res.next()){
			 centro= new Centro(res.getInt("idCentro_pk"), res.getString("nombre"),res.getString("localidad"), res.getString("descripcion"));
		}else{
			System.out.println("Dato no encontrado");
			//Lanza Excepcion
		}
        stmt.close();
			
		return centro;
	}

	/* (non-Javadoc)
	 * @see persistencia.DAOCentro#insert(java.lang.Object)
	 */
	@Override
	public int insert(Object obj) throws SQLException{
		Centro aux= (Centro)obj;
		int resul=0;
		
		PreparedStatement stmt = Con.prepareStatement("INSERT INTO Centro(Nombre, Localidad, Descripcion) VALUES (?,?,?)");

		stmt.setString(1, aux.getNombre());
		stmt.setString(2, aux.getLocalidad());
		stmt.setString(3, aux.getDescripcion());
		resul= stmt.executeUpdate();
        stmt.close(); 
				
		return resul;
	}

	/* (non-Javadoc)
	 * @see persistencia.DAOCentro#select(java.lang.String)
	 */
	@Override
	public ArrayList<Object> select(String condicion) throws SQLException {
		ArrayList<Object> centros = new ArrayList<Object>();
		Statement stmt;
			
		stmt = Con.createStatement();
		ResultSet res  = stmt.executeQuery(condicion);
		 while(res.next()) 
         { 
			 Centro aux= new Centro(res.getInt("idCentro_pk"), res.getString("nombre"),res.getString("localidad"), res.getString("descripcion"));
			 centros.add(aux);
         } 
		 res.close(); 
		 stmt.close(); 
	    
		return centros;
	}

	/* (non-Javadoc)
	 * @see persistencia.DAOCentro#update(java.lang.String)
	 */
	@Override
	public int update(Object obj) {
		// TODO Auto-generated method stub
		return 0;
	}
	
	public void cerrarDAO() throws SQLException{
		Con.close();
	}
	
	
}
